package cn.itcast.nems.studentrecord.web.vo.response;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;

import lombok.Data;

/**
 * 
 * 
 *
 * @author 刘曙
 *
 * @version 
 *
 * @since 2024年1月4日
 */
@Data
public class JournalFinalLineVO implements Serializable {

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 380582917600697308L;

    /**
     * 主键ID;UUID
     */
    private String id;

    /**
     * 结课凭单ID
     */
    private String journalFinalId;

    /**
     * 学生ID;办理结课凭单时候，学籍所属的学生，不跟随学籍变更
     */
    private Integer studentId;

    /**
     * 学生姓名
     */
    private String studentName;

    /**
     * 学号
     */
    private String studentNo;

    /**
     * 学籍ID
     */
    private String studentRecordId;

    /**
     * 学籍进班日期;来自于办理结课凭单时候学籍上的对应字段
     */
    private Date inDate;

    /**
     * 学籍出班日期;同本结课凭单“实际结课日期”
     */
    private Date settlementDate;

    /**
     * 实际服务天数;公式：实际结课日期 - 学籍进班日期 + 1
     */
    private Integer actualServiceDays;

    /**
     * 学籍实际应交金额;来自于办理结课凭单时候学籍上的对应字段
     */
    private Integer actualAmountDue;

    /**
     * 学籍转班转入金额;来自于办理结课凭单时候学籍上的对应字段
     */
    private Integer transferFromAmount;

    /**
     * 学籍已交金额;来自于办理结课凭单时候学籍上的对应字段，不跟随学籍变更
     */
    private Integer paidAmount;

    /**
     * 学籍剩余应付金额;来自于办理结课凭单时候学籍上的对应字段，不跟随学籍变更
     */
    private Integer balanceAmountDue;

    /**
     * 学籍退费金额;来自于办理结课凭单时候学籍上的对应字段，不跟随学籍变更
     */
    private Integer refundAmount;

    /**
     * 备注
     */
    private String remark;
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime createdDatetime;
    
    /**
     * 最后更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime modifiedDatetime;

    /**
     * 创建人邮箱
     */
    private String createdBy;
    
    /**
     * 创建人名称
     */
    private String createdByName;

    /**
     * 最后更新人邮箱
     */
    private String modifiedBy;
    
    /**
     * 最后更新人名称
     */
    private String modifiedByName;
}
